package com.ruoyi.ldzlsb.mapper;

import java.util.List;
import com.ruoyi.ldzlsb.domain.SbMaintenancePlan;
import org.apache.ibatis.annotations.Param;

/**
 * 保养计划Mapper接口
 * 
 * @author anli
 * @date 2025-01-11
 */
public interface SbMaintenancePlanMapper 
{
    /**
     * 查询保养计划
     * 
     * @param planId 保养计划主键
     * @return 保养计划
     */
    public SbMaintenancePlan selectSbMaintenancePlanByPlanId(Long planId);

    /**
     * 查询保养计划列表
     * 
     * @param sbMaintenancePlan 保养计划
     * @return 保养计划集合
     */
    public List<SbMaintenancePlan> selectSbMaintenancePlanList(SbMaintenancePlan sbMaintenancePlan);

    /**
     * 查询保养计划列表（包含关联信息）
     * 
     * @param sbMaintenancePlan 保养计划
     * @return 保养计划集合
     */
    public List<SbMaintenancePlan> selectSbMaintenancePlanWithInfoList(SbMaintenancePlan sbMaintenancePlan);

    /**
     * 新增保养计划
     * 
     * @param sbMaintenancePlan 保养计划
     * @return 结果
     */
    public int insertSbMaintenancePlan(SbMaintenancePlan sbMaintenancePlan);

    /**
     * 修改保养计划
     * 
     * @param sbMaintenancePlan 保养计划
     * @return 结果
     */
    public int updateSbMaintenancePlan(SbMaintenancePlan sbMaintenancePlan);

    /**
     * 删除保养计划
     * 
     * @param planId 保养计划主键
     * @return 结果
     */
    public int deleteSbMaintenancePlanByPlanId(Long planId);

    /**
     * 批量删除保养计划
     * 
     * @param planIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSbMaintenancePlanByPlanIds(Long[] planIds);

    /**
     * 根据设备ID查询保养计划
     * 
     * @param equipmentId 设备ID
     * @return 保养计划集合
     */
    public List<SbMaintenancePlan> selectSbMaintenancePlanByEquipmentId(Long equipmentId);

    /**
     * 根据保养人员ID查询保养计划
     * 
     * @param maintainerId 保养人员ID
     * @return 保养计划集合
     */
    public List<SbMaintenancePlan> selectSbMaintenancePlanByMaintainerId(Long maintainerId);
    
    /**
     * 根据配置ID查询保养计划
     * 
     * @param configId 配置ID
     * @return 保养计划集合
     */
    public List<SbMaintenancePlan> selectSbMaintenancePlanByConfigId(Long configId);
    
    /**
     * 检查计划编号是否唯一
     * 
     * @param planCode 计划编号
     * @return 保养计划信息
     */
    public SbMaintenancePlan checkPlanCodeUnique(String planCode);
    
    /**
     * 统计当天保养计划数量
     * 
     * @return 当天保养计划数量
     */
    public int countTodayMaintenancePlans();
} 